package com.jinglin.mapper;


import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jinglin.entity.po.VideoInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 视频信息 Mapper 接口
 * </p>
 *
 * @author ${author}
 * @since 2025-03-12
 */
public interface VideoInfoMapper extends BaseMapper<VideoInfo> {

    /*
    * 这个方法用来在数据库层面进行统计数据的修改。
    * 在数据库层面可以施加乐观锁，避免并发情况导致数据出错
    * */
    void updateCountInfo(@Param("field") String field,@Param("addCount") Integer addCount,@Param("videoId") String videoId);

    List<VideoInfo> getVideoInfoListPage(int start, Integer pageSize, String field, String videoName, String userId);

    List<VideoInfo> getAllVideoExclude(List<String> ids,String userId);

    List<VideoInfo> select24HotVideoList(int start, Integer pageSize);
    Integer count24HotVideo();

    IPage<VideoInfo> fullTextSearch(
            @Param("page") Page<VideoInfo> page,
            @Param("keyword") String keyword,
            @Param("ew") Wrapper<VideoInfo> wrapper);

    Integer getVideoLikeCountByUserId(String userId);
    Integer getVideoPlayCountByUserId(String userId);

}
